package top.wbhzx.wangpan.util;

import java.util.*;
import java.util.regex.Pattern;

/**
 * @author JiangZuoWei
 * @date 2018年4月26日 上午9:47:09
 * @remark
 */
public class StringUtils {

	/**
     * 返回UUID（去-连接符）字符串
     * @return
     */
    public static String randomUUID() {
        return UUID.randomUUID().toString().replaceAll("-","");
    }
	
    
    public static boolean allNotNull(final Object... values) {
        if (values == null) {
            return false;
        }

        for (final Object val : values) {
            if (val == null) {
                return false;
            }
        }
        return true;
    }
    
    public static boolean allNotBlank(final Object... values) {
        if (values == null) {
            return false;
        }

        for (final Object val : values) {
            if (val == null || "".equals(val)) {
                return false;
            }
        }
        return true;
    }

    public static String null2Empty(String value) {
        return value == null ? "" : value;
    }
    
    public static boolean isContainSpecial(String str) {
        //String regEx = "[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~！@#￥%……&*（）——+|{}【】‘；：”“’。，、？]";
    	//String regEx = "[`~!@#$%^&*()+=|{}''\\[\\]<>/?~！@#￥%……&*（）——+|{}【】‘；：”“’。，、？]";
    	//String regEx = "[`~!@#$%^&*()+=|''\\[\\]<>/?~！@#￥%……&*（）——+|【】‘；：”“’。，、？]";
    	String regEx = "[`~^*<>~‘’]";
        Pattern p = Pattern.compile(regEx);
        if (p.matcher(str).find()) {
        	return true;
        }
        return false;
    }
    
    public static void main(String[] args) {
		String test = "<\" onmousemove=\"alert(/fc04/)\">";
		if (isContainSpecial(test)) {
			System.out.println("ok");
		} else {
			System.out.println("no");
		}
	}

    /**
     * 生成指定位数数字字符串
     * @param number
     * @return
     */
    public static String randomNumber(int number){
        Random random = new Random();
        String identityCode = "";
        for (int i = 0; i < number; i++) {
            identityCode += random.nextInt(10);
        }
        return identityCode;
    }

    /**
     * 判断字符数组是否为空
     */
    public static boolean areNotEmpty(String... values) {
        boolean result = true;
        if (values == null || values.length == 0) {
            result = false;
        } else {
            for (String value : values) {
                result &= !isEmpty(value);
            }
        }
        return result;
    }

    /**
     * 把数组所有元素排序，并按照“参数=参数值”的模式用“&”字符拼接成字符串
     *
     * @param params
     *            需要排序并参与字符拼接的参数组
     * @return 拼接后字符串
     */
    public static String createLinkString(Map<String, String> params) {

        List<String> keys = new ArrayList<String>(params.keySet());
        Collections.sort(keys);

        String prestr = "";

        for (int i = 0; i < keys.size(); i++) {
            String key = keys.get(i);
            String value = params.get(key);

            if (i == keys.size() - 1) {
                prestr = prestr + key + "=" + value;
            } else {
                prestr = prestr + key + "=" + value + "&";
            }
        }

        return prestr;
    }

    /**
     * 判断字符串是否为空
     * <ul>
     * <li>isEmpty(null) = true</li>
     * <li>isEmpty("") = true</li>
     * <li>isEmpty("   ") = true</li>
     * <li>isEmpty("abc") = false</li>
     * </ul>
     *
     * @param value
     *            目标字符串
     * @return true/false
     */
    public static boolean isEmpty(String value) {
        int strLen;
        if (value == null || (strLen = value.length()) == 0) {
            return true;
        }
        for (int i = 0; i < strLen; i++) {
            if ((Character.isWhitespace(value.charAt(i)) == false)) {
                return false;
            }
        }
        return true;
    }

    /**
     * 字符串是否为null或length==0
     * @param str
     * @return
     */
    public static boolean isBlank(String str) {
        if (str == null || str.length() == 0) {
            return true;
        }
        return false;
    }
    
}
